In software development, declarative programming is an approach which expresses computational logic without fully describing control flow, as opposed to imperative programming, which describes a step-by-step flow of control. Informally, declarative programming explicitly describes a result a program is attempting to provide by declaring the result, whereas imperative programming describes a result implicitly by stating the steps being taken to produce the result. A given program can contain, and often does contain, both declarative and imperative portions.
Some examples of declarative programming languages include markup languages. Two prominent markup languages are HyperText Markup Language (“HTML”) and eXtensible Application Markup Language (“XAML”). Among other uses, XAML and HTML and other markup languages can be used to define visible elements of an application program's User Interface (“UI”), such as borders, buttons, geometric shapes, panels, text boxes, viewers, and many other visible elements or their properties. Using markup code to help define a UI facilitates separation of an application into a UI portion and an underlying business logic portion. This separation in turn makes it possible for one development team to work on the UI while a different development team works on the business logic.